// string::find
#include <iostream>
#include <string>
using namespace std;

inline void xyz(int v1, int v2, const char *x) { \
	cout << "int version";\
} \
template <class t1, class t2>  \
inline void xyz(const t1& v1, const t2& v2, const char *x) {\
	cout << "template version";\
}


#define NEQUAL(a, b, c, d) x##c##z ((a) , (b), d);

int main ()
{
	string str ("There are two needles in this haystack with needles.");
	string str2 ("needle");
	size_t found;

	// different member versions of find in the same order as above:
	found=str.find(str2);

	NEQUAL(std::string::npos, found, y, "blah")

		cout << endl << "first 'needle' found at: " << found << " npos: " << string::npos << endl;

	return 0;
}
